A peer-to-peer synchronization environment and its underlying hardware/software interface system is disclosed in detail in the Foundational Patent Applications recited earlier herein. In summary, the Foundational Patent Applications describe a hardware/software interface system (such as, but not limited to, an operating system) where, among other things, autonomous units of storable information (Items) comprise several component change units (CUs) that constitute the basic data change element for synchronization. Each CU has associated metadata that enables the synchronization system to track what changes need to be updated on peer computer systems as well as what changes received from other peer computer systems should be applied.
For certain hardware/software interface systems, including the one described in the Foundational Patent Applications, certain of the autonomous units of storable information (e.g., an Item) may be of two kinds: structured or mixed. A structured element (SE) solely comprises richly-structured data, whereas a mixed element (ME) comprises both richly-structure data and an unstructured filestream. With regard to synchronization, an SE meets certain size restrictions and is easily synchronized because it is small enough to create copies as needed. However, an ME is typically used for data structures that exceed the normal limits for Items and, because of their size, cannot be so easily copied.
For certain hardware/software interface systems, including the one described in the Foundational Patent Applications, synchronization of Items is typically performed at a transaction isolation level (TIL) that allows the target Item to be copied during synchronization. Specifically, the target item is “snapshotted” such that while it is being copied to a synchronization peer it cannot be written to by another process; instead, a copy of the target Item is made and modified by the other process, and this copy then overwrites the original once the synchronization of said target Item is complete. This as-needed copying essentially allows the synchronization system to prevent the target item from being changed while it is being copied to the synchronization peer (and thus provides a complete “snapshot” that remains unchanged during the operation of the synchronization process) while allowing other processes to make changes to a copy of the targeted Item that eventually replaces the targeted Item once the synchronization of said target Item is complete. This particular TIL can be referred to as a snapshot TIL (STIL).
However, while an SE can be synchronized using snapshot TIL, it is often the case that snapshots are not made for an ME's filestream because of the size of the filestream itself and the undesirability of creating even a temporary copy of very large data objects. Therefore, what is needed in the art is a system and method for synchronizing MEs and, specifically, for synchronizing the filestream component of MEs between peer computer systems in a hardware/software interface system environment that does not permit snapshotting of large unstructured ME filestreams during synchronization.